home *** CD-ROM | disk | FTP | other *** search
/ Danny Amor's Online Library / Danny Amor's Online Library - Volume 1.iso / html / rfc / rfcxxx / rfc767 < prev    next >
Text File  |  1995-07-25  |  60KB  |  2,380 lines

  1.  
  2.  
  3.  
  4. RFC:767
  5.                                     
  6.                                     
  7.                                     
  8.                                     
  9.                                     
  10.                                     
  11.      A STRUCTURED FORMAT FOR TRANSMISSION OF MULTI-MEDIA DOCUMENTS
  12.                                     
  13.                                     
  14.                                     
  15.                            Jonathan B. Postel
  16.  
  17.  
  18.  
  19.  
  20.  
  21.  
  22.  
  23.  
  24.  
  25.  
  26.  
  27.  
  28.  
  29.  
  30.  
  31.  
  32.  
  33.  
  34.                               August 1980
  35.                                     
  36.                                     
  37.                                     
  38.                                     
  39.                      Information Sciences Institute
  40.                    University of Southern California
  41.                            4676 Admiralty Way
  42.                    Marina del Rey, California  90291
  43.  
  44.                              (213) 822-1511
  45.  
  46.  
  47. < INC-PROJECT, MMMSFS.NLS.21, >, 5-Sep-80 20:19 JBP ;;;;
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70.  
  71.  
  72.  
  73.  
  74.  
  75.  
  76.  
  77.  
  78.  
  79.  
  80.  
  81.  
  82.  
  83.  
  84.  
  85.  
  86.  
  87.  
  88.  
  89.  
  90.  
  91.  
  92.  
  93.  
  94.  
  95.  
  96.  
  97.  
  98.  
  99.  
  100.  
  101.  
  102.                                                                   Postel
  103.  
  104.  
  105. August 1980                                                             
  106.            A Structured Format for Transmission of Multi-Media Documents
  107.  
  108.  
  109.  
  110.                            TABLE OF CONTENTS
  111.  
  112.     PREFACE ........................................................ iii
  113.  
  114. 1.  INTRODUCTION ..................................................... 1
  115.  
  116.   1.1.  Motivation ................................................... 1
  117.   1.2.  Scope ........................................................ 1
  118.   1.3.  Terminology .................................................. 1
  119.   1.4.  Document Description ......................................... 2
  120.   1.5.  Other Work ................................................... 2
  121.  
  122. 2.  SPECIFICATION .................................................... 3
  123.  
  124.   2.1.  Document ..................................................... 3
  125.   2.2.  Message Objects  ............................................. 5
  126.   2.3.  Body Structures ............................................. 13
  127.   2.3.1.  Simple Elements ........................................... 13
  128.   2.3.2.  Structured Text ........................................... 13
  129.   2.3.3.  NLS File Example .......................................... 13
  130.   2.3.4.  Multimedia Structures ..................................... 15
  131.   2.3.5.  The Media ................................................. 21
  132.   2.3.6.  TEXT ...................................................... 22
  133.   2.3.7.  VOICE ..................................................... 22
  134.   2.3.8.  FACSIMILE ................................................. 23
  135.   2.3.9.  GRAPHICS .................................................. 24
  136.  
  137. 3.  EXAMPLES & SCENARIOS ............................................ 25
  138.  
  139.   Example 1:  Text Example .......................................... 25
  140.   Example 2:  Multimedia Example .................................... 28
  141.  
  142. REFERENCES .......................................................... 31
  143.  
  144.   
  145.  
  146.  
  147.  
  148.  
  149.  
  150.  
  151.  
  152.  
  153.  
  154.  
  155.  
  156.  
  157.  
  158.  
  159.  
  160.  
  161. Postel                                                          [Page i]
  162.  
  163.  
  164.                                                              August 1980
  165. A Structured Format for Transmission of Multi-Media Documents
  166.  
  167.  
  168.  
  169.  
  170.  
  171.  
  172.  
  173.  
  174.  
  175.  
  176.  
  177.  
  178.  
  179.  
  180.  
  181.  
  182.  
  183.  
  184.  
  185.  
  186.  
  187.  
  188.  
  189.  
  190.  
  191.  
  192.  
  193.  
  194.  
  195.  
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202.  
  203.  
  204.  
  205.  
  206.  
  207.  
  208.  
  209.  
  210.  
  211.  
  212.  
  213.  
  214.  
  215.  
  216.  
  217.  
  218.  
  219.  
  220. [Page ii]                                                         Postel
  221.  
  222.  
  223. August 1980                                                             
  224.            A Structured Format for Transmission of Multi-Media Documents
  225.  
  226.  
  227.  
  228.                                 PREFACE
  229.  
  230.  
  231.  
  232. This is the first edition of this format specification and should be
  233. treated as a request for comments, advice, and suggestions.  A great
  234. deal of prior work has been done on computer aided message systems and
  235. some of this is listed in the reference section.  This specification was
  236. shaped by many discussions with members of the ARPA research community,
  237. and others interested in the development of computer aided message
  238. systems.  This document was prepared as part of the ARPA sponsored
  239. Internetwork Concepts Research Project at ISI.
  240.  
  241.                                                               Jon Postel
  242.  
  243.  
  244.  
  245.  
  246.  
  247.  
  248.  
  249.  
  250.  
  251.  
  252.  
  253.  
  254.  
  255.  
  256.  
  257.  
  258.  
  259.  
  260.  
  261.  
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268.  
  269.  
  270.  
  271.  
  272.  
  273.  
  274.  
  275.  
  276.  
  277.  
  278.  
  279. Postel                                                        [Page iii]
  280.  
  281.  
  282. August 1980                                                             
  283.            A Structured Format for Transmission of Multi-Media Documents
  284.  
  285.  
  286.  
  287.  
  288.  
  289.  
  290.  
  291.  
  292.  
  293.  
  294.  
  295.  
  296.  
  297.  
  298.  
  299.  
  300.  
  301.  
  302.  
  303.  
  304.  
  305.  
  306.  
  307.  
  308.  
  309.  
  310.  
  311.  
  312.  
  313.  
  314.  
  315.  
  316.  
  317.  
  318.  
  319.  
  320.  
  321.  
  322.  
  323.  
  324.  
  325.  
  326.  
  327.  
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334.  
  335.  
  336.  
  337.  
  338. Postel                                                         [Page iv]
  339.  
  340.  
  341.  
  342. RFC: 767                                                       J. Postel
  343.                                                                  USC-ISI
  344.                                                              August 1980
  345.  
  346.  
  347.  
  348.  
  349.      A STRUCTURED FORMAT FOR TRANSMISSION OF MULTI-MEDIA DOCUMENTS
  350.  
  351.  
  352.  
  353.                             1.  INTRODUCTION
  354.  
  355. This document describes a format for transmitting structured data
  356. representations of multimedia documents.  This format is intended to be
  357. used with the Internet Message Protocol in an internetwork message
  358. delivery system.  That system is designed to transmit messages between
  359. processes in host computers called Message Processing Modules (MPMs).
  360. MPMs are located in several networks and together constitute an
  361. internetwork message delivery system.  The Internet Message Protocol
  362. defines a message as being composed of an Identification, a Command, and
  363. a Document.  This report is intended to define the format of such
  364. Documents.  The reader is assumed to be familiar with the Internet
  365. Message Protocol [1].
  366.  
  367. 1.1.  Motivation
  368.  
  369.   Computer applications are being implemented which interact with users
  370.   in a variety of media (text, graphics, facsimile, speech).  As
  371.   computer devices become available to process multimedia information it
  372.   becomes desirable to use computers to exchange multimedia information
  373.   between programs and users via various mechanisms including computer
  374.   mail.
  375.  
  376. 1.2.  Scope
  377.  
  378.   This format is intended to be used for the transmission of multimedia
  379.   documents in the internetwork message delivery system, but it is
  380.   thought that it has a wider applicability.
  381.  
  382. 1.3.  Terminology
  383.  
  384.   The messages are routed by a process called the Message Processing
  385.   Module or MPM.  Messages are created and consumed by User Interface
  386.   Programs (UIPs) in conjunction with users.
  387.  
  388.   The basic unit transferred between MPMs is called a message.  A
  389.   message is made up of a transaction identifier (which uniquely
  390.   identifies the message), a command (which contains the necessary
  391.   information for delivery), and document.  The document is a data
  392.   structure.
  393.  
  394.   For a personal letter the document body corresponds to the contents of
  395.  
  396.  
  397. Postel                                                          [Page 1]
  398.  
  399.  
  400.                                                              August 1980
  401. A Structured Format for Transmission of Multi-Media Documents
  402. Introduction
  403.  
  404.  
  405.  
  406.   the letter; the document header corresponds to the date line,
  407.   greeting, and signature.
  408.  
  409.   For an inter-office memo the document body corresponds to the text;
  410.   the document header corresponds to the header of the memo.
  411.  
  412.   The commands correspond to the information used by the Post Office or
  413.   the mail room to route the letter or memo.  Some of the information in
  414.   the command is supplied by the UIP.
  415.  
  416. 1.4.  Document Description
  417.  
  418.   The document is composed of fields.  Each field will carry an
  419.   identifying name.  Typical fields are DATE, TO, SUBJECT, and BODY.
  420.   Most of the fields will be very simple, some will be complex.  The
  421.   body field may be quite complex.  For example, the DATE is a very
  422.   constrained character string specifying the date and time in ISO
  423.   format. A more complex example is the TO field which is a list of
  424.   mailboxes, where a mailbox is itself a property list of address
  425.   information items.  The BODY may be simply a character string, or a
  426.   very structured collection of data representing information in
  427.   different media.
  428.  
  429.   The BODY may be structured to indicate a controlled presentation of
  430.   multimedia information.  There is provision for the inclusion of text,
  431.   graphics, facsimile, and voice information in the body of documents.
  432.   The presentation of information units may sequential, independent, or
  433.   simultaneous.
  434.  
  435. 1.5.  Other Work
  436.  
  437.   This protocol the benefited from the earlier work on message protocols
  438.   in the ARPA Network [2,3,4,5,6], and the ideas of others about the
  439.   design of computer message systems [7,8,9,10,11,12,13,14,15,16,17,18].
  440.  
  441.  
  442.  
  443.  
  444.  
  445.  
  446.  
  447.  
  448.  
  449.  
  450.  
  451.  
  452.  
  453.  
  454.  
  455.  
  456. [Page 2]                                                          Postel
  457.  
  458.  
  459. August 1980                                                             
  460.            A Structured Format for Transmission of Multi-Media Documents
  461.  
  462.  
  463.  
  464.                            2.  SPECIFICATION
  465.  
  466. The structured format of a document is built on the basic data elements
  467. used in the Internet Message Protocol [1].
  468.  
  469. 2.1.  Document
  470.  
  471.   The document is a property list of <name,value> pairs called fields.
  472.   A few fields are specifically required and many are optional.  Some of
  473.   the field values are simple and a few are quite complicated.  In
  474.   particular the body value may be highly structured.
  475.  
  476.   Older message systems have considered the document to be divided into
  477.   a header and a body, and have used keywords to indicate specific
  478.   header fields (e.g., date, to, subject).  Roughly speaking, this
  479.   functionality is provided in this new structured format by considering
  480.   the name part of the <name,value> pair to be a keyword.  In addition,
  481.   this new structured format eliminates the separate treatment of the
  482.   body.
  483.  
  484.   It is impossible to foresee the many forms documents will take so the
  485.   standard for a document header must be flexible.  The approach here is
  486.   to define a set of basic fields and allow addition of whatever fields
  487.   are necessary.  Features added in this fashion may not be understood
  488.   by others.
  489.  
  490.   The minimum document is a property list of the following fields:
  491.  
  492.     Name     Value
  493.     ----     -----
  494.     DATE     date string (name)
  495.     SENDER   a mailbox
  496.     SUBJECT  subject string (text)
  497.     BODY     a data structure
  498.  
  499.   A typical document is a property list containing the following fields:
  500.  
  501.     Name     Value
  502.     ----     -----
  503.     DATE     date string (name)
  504.     SENDER   a mailbox
  505.     FROM     list of mailboxes
  506.     TO       list of mailboxes
  507.     CC       list of mailboxes
  508.     SUBJECT  subject string (text)
  509.     BODY     a data structure
  510.  
  511.  
  512.  
  513.  
  514.  
  515. Postel                                                          [Page 3]
  516.  
  517.  
  518.                                                              August 1980
  519. A Structured Format for Transmission of Multi-Media Documents
  520. Specification
  521.  
  522.  
  523.  
  524.   An elaborate document might contain the following fields:
  525.  
  526.     Name        Value
  527.     ----        -----
  528.     DATE        date string (name)
  529.     SENDER      a mailbox
  530.     FROM        list of mailboxes
  531.     TO          list of mailboxes
  532.     CC          list of mailboxes
  533.     BCC         list of mailboxes
  534.     REPLY-TO    list of mailboxes
  535.     SUBJECT     subject string (text)
  536.     COMMENTS    comment string (text)
  537.     MESSAGE-ID  message identifier of this message (text)
  538.     IN-REPLY-TO message identifier of previous message (text)
  539.     REFERENCES  message identifiers of other messages (text)
  540.     KEYWORDS    key terms used in this message (text)
  541.     BODY        a data structure
  542.  
  543.   One of the key objects is the mailbox.  It appears in the sender,
  544.   from, to, cc, bcc, and reply-to fields.  The mailbox is a property
  545.   list of objects that combine to specify a destination recipient for a
  546.   message.  Most of the <name,value> pairs that make up a mailbox are
  547.   identical to those used in the deliver command in the Internet Message
  548.   Protocol [1].  A few additional <name,value> pairs are defined for use
  549.   in a mailbox in the document context.  In particular, there is a field
  550.   for the real name of a person in contrast to the "user name" which
  551.   identifies a computer account.
  552.  
  553.   In addition there is a field to specify a distribution group name.
  554.   Such group names are used to indicate that a document is being sent to
  555.   a group of recipients.  This essentially presents an alternate form
  556.   for a mailbox which consists of the single <name,value> pair for the
  557.   group name.  There is no required relationship between a group name
  558.   mailbox and other mailboxes in the same list.
  559.  
  560.   For example, all of the following situations are allowed:
  561.  
  562.     .  a mailbox list consisting of a single mailbox specifying a
  563.        particular user,
  564.  
  565.     .  a mailbox list consisting of a single mailbox with a group name,
  566.  
  567.     .  a mailbox list consisting of a mailbox with a group name and a
  568.        mailbox specifying a particular user, with either the user in or
  569.        not in the group,
  570.  
  571.     .  a mailbox list consisting of a mailbox with a group name and a
  572.  
  573.  
  574. [Page 4]                                                          Postel
  575.  
  576.  
  577. August 1980                                                             
  578.            A Structured Format for Transmission of Multi-Media Documents
  579.                                                            Specification
  580.  
  581.  
  582.  
  583.        several mailboxes specifying a particular users, with some users
  584.        in the group and some not,
  585.  
  586.     .  a mailbox list consisting of several mailboxes specifying group
  587.        names and a several mailboxes specifying a particular users, with
  588.        some users in the groups and some not.
  589.  
  590.     
  591.  
  592. 2.2.  Message Objects
  593.  
  594.   In the documents of messages, we use a set of objects such as mailbox
  595.   or date.  These objects are encoded in basic data elements.  Some
  596.   objects are simple things like integers or character strings, other
  597.   objects are more complex things like lists or property lists.  The
  598.   following is a list of the objects used in messages.  The object
  599.   descriptions are in alphabetical order.
  600.  
  601.   Account
  602.  
  603.     The account information.  Represented by a name element.
  604.  
  605.   Address
  606.  
  607.     Address is intended to contain the minimum information necessary to
  608.     identify a user, and no more (compare with mailbox).
  609.  
  610.     An address is a property list which contains the following
  611.     <name,value> pairs:
  612.  
  613.       name    description
  614.       ----    -----------
  615.       NET     network name
  616.       HOST    host name
  617.       USER    user name
  618.  
  619.     or:
  620.  
  621.       name    description
  622.       ----    -----------
  623.       MPM     mpm-identifier
  624.       USER    user name
  625.  
  626.   Answer
  627.  
  628.     A yes (true) or no (false) answer to a question.  Represented by a
  629.     boolean element.
  630.  
  631.  
  632.  
  633. Postel                                                          [Page 5]
  634.  
  635.  
  636.                                                              August 1980
  637. A Structured Format for Transmission of Multi-Media Documents
  638. Specification
  639.  
  640.  
  641.  
  642.   BCC
  643.  
  644.     A list of mailboxes.  The addresses of those who receive "blind
  645.     carbon copies" of the message.
  646.  
  647.   Body
  648.  
  649.     A data structure.  This may be as simple as a character string
  650.     (represented by a name or text element), or complex structure of
  651.     lists.  It may be encrypted in part or in whole.  Section 3.3
  652.     describes some possible structured bodies.
  653.  
  654.   C
  655.  
  656.     A character.  Represented by a name element.
  657.  
  658.   CC
  659.  
  660.     A list of mailboxes.  When copies of a message are sent to others in
  661.     addition to the addresses in the To object, those to whom the copies
  662.     are sent will have their addresses recorded here.
  663.  
  664.   City
  665.  
  666.     A city.  Represented by a name element.
  667.  
  668.   Comments
  669.  
  670.     A comment string.  Represented by a text element.
  671.  
  672.   Count
  673.  
  674.     A count of items of some sort.  Represented by a integer element.
  675.  
  676.   Country
  677.  
  678.     A country.  Represented by a name element.
  679.  
  680.  
  681.  
  682.  
  683.  
  684.  
  685.  
  686.  
  687.  
  688.  
  689.  
  690.  
  691.  
  692. [Page 6]                                                          Postel
  693.  
  694.  
  695. August 1980                                                             
  696.            A Structured Format for Transmission of Multi-Media Documents
  697.                                                            Specification
  698.  
  699.  
  700.  
  701.   Date
  702.  
  703.     The date and time are represented according to the International
  704.     Standards Organization (ISO) recommendations [19,20,21].  Taken
  705.     together the ISO recommendations 2014, 3307, and 4031 result in the
  706.     following representation of the date and time:
  707.  
  708.       yyyy-mm-dd-hh:mm:ss,fff+hh:mm
  709.  
  710.     Where yyyy is the four-digit year, mm is the two-digit month, dd is
  711.     the two-digit day, hh is the two-digit hour in 24 hour time, mm is
  712.     the two-digit minute, ss is the two-digit second, and fff is the
  713.     decimal fraction of the second.  To this basic date and time is
  714.     appended the offset from Greenwich as plus or minus hh hours and mm
  715.     minutes.
  716.  
  717.     The time is local time and the offset is the difference between
  718.     local time and Coordinated Universal Time (UTC).  To convert from
  719.     local time to UTC algebraically subtract the offset from the local
  720.     time.
  721.  
  722.     For example, when the time in
  723.               Los Angeles is  14:25:00-08:00
  724.               the UTC is      22:25:00
  725.  
  726.     or when the time in
  727.               Paris is        11:43:00+01:00
  728.               the UTC is      10:43:00
  729.  
  730.   Device
  731.  
  732.     A device name.  Represented by a name element.
  733.  
  734.   Document
  735.  
  736.     A property list of fields.
  737.  
  738.   Distribution Group
  739.  
  740.     An distribution group is a property list which contains the
  741.     following <name,value> pair:
  742.  
  743.       name    description
  744.       ----    -----------
  745.       GROUP   document distribution group name
  746.  
  747.     This construct is used so that a distribution group will be a
  748.     special case of a mailbox.
  749.  
  750.  
  751. Postel                                                          [Page 7]
  752.  
  753.  
  754.                                                              August 1980
  755. A Structured Format for Transmission of Multi-Media Documents
  756. Specification
  757.  
  758.  
  759.  
  760.   Facsimile Structure
  761.  
  762.     A facsimile data structure.  Represented by a property list.
  763.  
  764.   File
  765.  
  766.     A file name.  Represented by a name element.
  767.  
  768.   Format
  769.  
  770.     A format indicator.  Represented by a name element.
  771.  
  772.   From
  773.  
  774.     A list of mailboxes.  The From is the name of the author of a
  775.     document.
  776.  
  777.   Graphics Structure
  778.  
  779.     A graphics data structure.  Represented by a property list.
  780.  
  781.   Group
  782.  
  783.     A document distribution group name.  Represented by a name element.
  784.  
  785.   Host
  786.  
  787.     A host name.  Represented by a name element.
  788.  
  789.   Ident
  790.  
  791.     The identifier of a person, usually their initials.  Represented by
  792.     a name element.
  793.  
  794.   In-Reply-To
  795.  
  796.     The message identifier of previous message.  Represented by a text
  797.     element.
  798.  
  799.   Internet Address
  800.  
  801.     This identifies a host in the ARPA internetwork environment.  The
  802.     internet address is a 32 bit number, the higher order 8 bits
  803.     identify the network, and the lower order 24 bits identify the host
  804.     on that network [22].  For use in this format the internet address
  805.     is divided into eight bit fields and the value of each field is
  806.     represented in decimal digits.  For example, the ARPANET address of
  807.     ISIE is 167837748 and is represented as 10,1,0,52.  Further, this
  808.  
  809.  
  810. [Page 8]                                                          Postel
  811.  
  812.  
  813. August 1980                                                             
  814.            A Structured Format for Transmission of Multi-Media Documents
  815.                                                            Specification
  816.  
  817.  
  818.  
  819.     representation may be extended to include an address within a host,
  820.     such as the TCP port of an MPM, for example, 10,1,0,52,0,45.
  821.  
  822.   Keywords
  823.  
  824.     The key terms used in this message.  Represented by a text element.
  825.  
  826.   Mailbox
  827.  
  828.     This is the destination address of a user of the internetwork mail
  829.     system.  Mailbox contains information such as network, host,
  830.     location, and local user identifier of the recipient of the message.
  831.     The mailbox may contain information in addition to the minimum
  832.     required for delivery.
  833.  
  834.     As an example, when one sends a message to someone for the first
  835.     time, he may include many items to aid in identifying the correct
  836.     recipient.  However, once he gets a reply to this message, the reply
  837.     will contain an Address (as opposed to Mailbox) which may be used
  838.     from then on.
  839.  
  840.       A mailbox is a property list.  A mailbox might contain the
  841.       following <name,value> pairs:
  842.  
  843.         name    description
  844.         ----    -----------
  845.         MPM     mpm-identifier
  846.         NET     network name
  847.         HOST    host name
  848.         PORT    address of MPM within the host
  849.         USER    user name (computer account name)
  850.         PERSON  the real name of a person
  851.         GROUP   document distribution group
  852.         ORG     organization name
  853.         CITY    city
  854.         STATE   state
  855.         COUNTRY country
  856.         ZIP     zip code
  857.         PHONE   phone number
  858.  
  859.     The minimum mail box is an Address or a Distribution Group.
  860.  
  861.   Message-ID
  862.  
  863.     The message identifier of this message.  This is not related to the
  864.     MPM message identification, but is a UIP long term document
  865.     identifier.  Represented by a text element.
  866.  
  867.  
  868.  
  869. Postel                                                          [Page 9]
  870.  
  871.  
  872.                                                              August 1980
  873. A Structured Format for Transmission of Multi-Media Documents
  874. Specification
  875.  
  876.  
  877.  
  878.   MPM-Identifier
  879.  
  880.     The internetwork address of an MPM.  This may be the ARPA Internet
  881.     Address or an X.121 Public Data Network Address [23].  The
  882.     mpm-identifier is a property list which has one <name,value> pair.
  883.     This unusual structure is used so that it will be easy to determine
  884.     the type of address used.
  885.  
  886.   Net
  887.  
  888.     A network name.  Represented by a name element.
  889.  
  890.   NLS Block
  891.  
  892.     The information in an NLS node.  Represented by a property list.
  893.  
  894.   NLS Node
  895.  
  896.     An NLS block and substructure.  Represented by a property list.
  897.  
  898.   NLS Substructure
  899.  
  900.     A list of NLS nodes.  Represented by a list.
  901.  
  902.   Org
  903.  
  904.     An organization name.  Represented by a name element.
  905.  
  906.   Paragraph
  907.  
  908.     A paragraph of text.  Represented by a text element.
  909.  
  910.   Parcel
  911.  
  912.     The basic unit of voice data.  Represented by a bitstr element.
  913.  
  914.   Person
  915.  
  916.     The real name of a person.  Represented by a name element.
  917.  
  918.   Password
  919.  
  920.     A password.  Represented by a name element.
  921.  
  922.   Phone
  923.  
  924.     A phone number.  Represented by a name element.
  925.  
  926.  
  927.  
  928. [Page 10]                                                         Postel
  929.  
  930.  
  931. August 1980                                                             
  932.            A Structured Format for Transmission of Multi-Media Documents
  933.                                                            Specification
  934.  
  935.  
  936.  
  937.   Pointer
  938.  
  939.     A pointer to information stored outside this data structure.  A
  940.     property list containing the information necessary to locate the
  941.     external data, the information necessary to gain access to the
  942.     external data, and the information necessary to apply the correct
  943.     interpretation to the external data.  For example, this might
  944.     include:
  945.  
  946.       name       description
  947.       ----       -----------
  948.       NET        network name
  949.       HOST       host name
  950.       FILE       file name
  951.       USER       user name (computer account name)
  952.       PASSWORD   password
  953.       ACCOUNT    account
  954.       FORMAT     format
  955.  
  956.   Port
  957.  
  958.     The address of MPM within the host.  Represented by a name element.
  959.  
  960.   Presentation Descriptor
  961.  
  962.     A property list of <name,value> pairs, where the name is an order
  963.     indicator, and the value is a presentation element.  The order
  964.     indicators are SEQUENTIAL, SIMULTANEOUS, and INDEPENDENT.
  965.  
  966.   Presentation Element
  967.  
  968.     A property list of media structures.
  969.  
  970.   Protocol
  971.  
  972.     The name of the coding scheme used for a medium.  Represented by a
  973.     name element.
  974.  
  975.   References
  976.  
  977.     The message identifiers of other messages.  Represented by a list of
  978.     text elements.
  979.  
  980.   Reply-To
  981.  
  982.     A list of mailboxes.  Sometimes it will be desired to direct the
  983.     replies of a message to some address other than the from or the
  984.     sender.  In such a case the reply-to object can be used.
  985.  
  986.  
  987. Postel                                                         [Page 11]
  988.  
  989.  
  990.                                                              August 1980
  991. A Structured Format for Transmission of Multi-Media Documents
  992. Specification
  993.  
  994.  
  995.  
  996.   R 450 Block
  997.  
  998.     The unit of Rapicom 450 data (585 bits).  Represented by a bitstr
  999.     element.
  1000.  
  1001.   Sender
  1002.  
  1003.     A mailbox.  The sender will contain the address of the individual
  1004.     who sent the message.  In some cases this is NOT the same as the
  1005.     author of the message.  Under such a condition, the author should be
  1006.     specified in the from object.
  1007.  
  1008.   SID
  1009.  
  1010.     An NLS statement indetifier.  Represented by a integer element.
  1011.  
  1012.   State
  1013.  
  1014.     A state name.  Represented by a name element.
  1015.  
  1016.   Subject
  1017.  
  1018.     The subject of the message.  Represented by a text element.
  1019.  
  1020.   Text Structure
  1021.  
  1022.     A text data structure.  Represented by a property list.
  1023.  
  1024.   To
  1025.  
  1026.     A list of mailboxes.  To identifies the addressees of the message.
  1027.  
  1028.   User
  1029.  
  1030.     A user name (computer account name).  Represented by a name element.
  1031.  
  1032.   Version
  1033.  
  1034.     A version number.  Represented by a index element.
  1035.  
  1036.   Vocoder
  1037.  
  1038.     A vocoder name.  Represented by a name element.
  1039.  
  1040.   Voice Structure
  1041.  
  1042.     A voice data structure.  Represented by a property list.
  1043.  
  1044.  
  1045.  
  1046. [Page 12]                                                         Postel
  1047.  
  1048.  
  1049. August 1980                                                             
  1050.            A Structured Format for Transmission of Multi-Media Documents
  1051.                                                            Specification
  1052.  
  1053.  
  1054.  
  1055.   X121 Address
  1056.  
  1057.     This identifies a host in the Public Data Network environment.  When
  1058.     used as a part of identifier, it identifies the originating host of
  1059.     a message.  The X121 address is a sequence of up to 14 digits [23].
  1060.     For use in this format the X121 address is represented in decimal
  1061.     digits.
  1062.  
  1063.   ZIP
  1064.  
  1065.     A zip code.  Represented by a name element.
  1066.  
  1067. 2.3.  Body Structures
  1068.  
  1069.   2.3.1.  Simple Elements
  1070.  
  1071.     The body could simply be a single data element.  For example a
  1072.     single text element can represent a lengthy character string.
  1073.  
  1074.       <body> := TEXT
  1075.  
  1076.       or
  1077.  
  1078.       text:"this is the actual text of the body"
  1079.  
  1080.   2.3.2.  Structured Text
  1081.  
  1082.     The body could be thought of as paragraphs, where each paragraph is
  1083.     represented by a text element.  The paragraphs are then the elements
  1084.     of a list.
  1085.  
  1086.       <body> := LIST (<paragraph>, <paragraph>, ...)
  1087.  
  1088.         <paragraph> := TEXT
  1089.  
  1090.       or
  1091.  
  1092.       list:(text:"paragraph one", text:"paragraph two", ...)
  1093.  
  1094.   2.3.3.  NLS File Example
  1095.  
  1096.     It is possible to represent the data from NLS files in this format.
  1097.     NLS is a large multipurpose system which operates on structured data
  1098.     files.  The files are tree structured, and there is data associated
  1099.     with each node of the tree.  There are several fields associated
  1100.     with each node as well.
  1101.  
  1102.  
  1103.  
  1104.  
  1105. Postel                                                         [Page 13]
  1106.  
  1107.  
  1108.                                                              August 1980
  1109. A Structured Format for Transmission of Multi-Media Documents
  1110. Specification
  1111.  
  1112.  
  1113.  
  1114.     An NLS file is:
  1115.  
  1116.       proplist(                                                     file
  1117.         name:"FILENAME", name:<file>                        name of file
  1118.         name:"CREATION-DATE", name:<date>         creation date and time
  1119.         name:"VERSION", index:<version>              file version number
  1120.         name:"SID-COUNT", integer<count>               current SID count
  1121.         name:"LAST-WRITER", name:<ident>             last writer of file
  1122.         name:"OWNER", name:<ident>                         owner of file
  1123.         name:"LAST-WRITE-TIME", name:<date>     last write date and time
  1124.         name:"LEFT-NAME-DELIM-DEFAULT", name:<c>            default name
  1125.         name:"RIGHT-NAME-DELIM-DEFAULT", name:<c>             delimiters
  1126.         name:"SUBSTRUCTURE", <nls-substructure>             substructure
  1127.       )endlist
  1128.  
  1129.     An NLS substructure is:
  1130.  
  1131.       list:(                                                substructure
  1132.         <nls-node>                                 node is defined below
  1133.           .
  1134.           .
  1135.           .
  1136.       )endlist
  1137.  
  1138.     An NLS node is:
  1139.  
  1140.       proplist:(                                                    node
  1141.         name:"BLOCK", <nls-block>                    block defined below
  1142.         name:"SUBSTRUCTURE", <nls-substructure>             substructure
  1143.       )endlist
  1144.  
  1145.     An NLS block is:
  1146.  
  1147.       proplist:(                                                   block
  1148.         name:"LEFT-NAME-DELIM", name:<c>             left name delimiter
  1149.         name:"RIGHT-NAME-DELIM", name:<c>           right name delimiter
  1150.         name:"SID", integer:<sid>                             SID number
  1151.         name:"CREATOR", name:<ident>                   statement creator
  1152.         name:"CREATION-TIME", name:<date>         creation date and time
  1153.         name:"DATA", <data>                           data defined below
  1154.       )endlist
  1155.  
  1156.  
  1157.  
  1158.  
  1159.  
  1160.  
  1161.  
  1162.  
  1163.  
  1164. [Page 14]                                                         Postel
  1165.  
  1166.  
  1167. August 1980                                                             
  1168.            A Structured Format for Transmission of Multi-Media Documents
  1169.                                                            Specification
  1170.  
  1171.  
  1172.  
  1173.     NLS data is:
  1174.  
  1175.       proplist:(                                                    data
  1176.         name:"<a data name>", <type depends on data name>
  1177.                     .           .
  1178.                     .           .
  1179.                     .           .
  1180.       )endlist
  1181.  
  1182.     For text, data is:
  1183.  
  1184.       proplist:(                                                    data
  1185.         name:"TEXT", text:"text of statement"                       text
  1186.       )endlist
  1187.  
  1188.   2.3.4.  Multimedia Structures
  1189.  
  1190.     One can conceive of graphical information being displayed along with
  1191.     a running commentary, much as seminars use slides.  A slide and its
  1192.     description are tied together.  The coordination of such a
  1193.     presentation is central to its understanding.  This synchronization
  1194.     should be captured within the document structure.
  1195.  
  1196.     There are three fundamentally different types of time ordered
  1197.     control which are needed within the document structure.  These are:
  1198.  
  1199.       Simultaneous
  1200.       Sequential
  1201.       Independent
  1202.  
  1203.     Simultaneous data is intended for synchronous presentation.  The
  1204.     implication is that this data is presented in parallel.
  1205.  
  1206.     Sequential data items will be presented one at a time, in the order
  1207.     listed.  The ordering is strictly left to right.
  1208.  
  1209.     Independent data can be presented in any time order.  It is not
  1210.     ordered in any manner.
  1211.  
  1212.     The data is brokethe user-PI, C, sets up TELNET connections with both
  1213.       server-PI's.  One of the servers, say A, is then sent a PASV
  1214.       command telling him to "listen" on his data port rather than
  1215.       initiate a connection when he receives a transfer service command.
  1216.       When the user-PI receives an acknowledgment to the PASV command,
  1217.       which includes the identity of the host and port being listened
  1218.       on, the user-PI then sends A's port, a, to B in a PORT command; a
  1219.       reply is returned.  The user-PI may then send the corresponding
  1220.       service commands to A and B.  Server B initiates the connection
  1221.       and the transfer proceeds.  The command-reply sequence is listed
  1222.       below where the messages are vertically synchronous but
  1223.       horizontally asynchronous:
  1224.  
  1225.          User-PI - Server A                User-PI - Server B
  1226.          ------------------                ------------------
  1227.          
  1228.          C->A : Connect                    C->B : Connect
  1229.          C->A : PASV
  1230.          A->C : 227 Entering Passive Mode. A1,A2,A3,A4,a1,a2
  1231.                                            C->B : PORT A1,A2,A3,A4,a1,a2
  1232.                                            B->C : 200 Okay
  1233.          C->A : STOR                       C->B : RETR
  1234.                     B->A : Connect to HOST-A, PORT-a
  1235.  
  1236.       The data connection shall be closed by the server under the
  1237.       conditions described in the Section on Establishing Data
  1238.       Connections.  If the server wishes to close the connection after a
  1239.       transfer where it is not required, he should do so immediately
  1240.       after the file transfer is completed.  He should not wait until
  1241.       after a new transfer command is received because the user-process
  1242.       will have already tested the data connection to see if it needs to
  1243.       do a "listen"; (recall that the user must "listen" on a closed
  1244.       data port BEFORE sending the transfer request).  To prevent a race
  1245.       condition here, the server sends a reply (226) after closing the
  1246.       data connection (or if the connection is left open, a "file
  1247.       transfer completed" reply (250) and the user-PI should wait for
  1248.       one of these replies before issuing a new transfer command.
  1249.  
  1250.  
  1251.  
  1252.  
  1253.  
  1254.  
  1255.  
  1256.  
  1257.  
  1258.  
  1259.  
  1260.  
  1261.                                    41
  1262.  
  1263.  
  1264.                                                                         
  1265. June 1980                                                        IEN 149
  1266. File Transfer Protocol                                           RFC 765
  1267.  
  1268.  
  1269.  
  1270.    COMMANDS
  1271.  
  1272.       The commands are TELNET character string transmitted over the
  1273.       TELNET connections as described in the Section on FTP Commands.
  1274.       The command functions and semantics are described in the Section
  1275.       on Access Control Commands, Transfer Parameter Commands, FTP
  1276.       Service Commands, and Miscellaneous Commands.  The command syntax
  1277.       is specified here.
  1278.  
  1279.       The commands begin with a command code followed by an argument
  1280.       field.  The command codes are four or fewer alphabetic characters.
  1281.       Upper and lower case alphabetic characters are to be treated
  1282.       identically.  Thus any of the following may represent the retrieve
  1283.       command:
  1284.  
  1285.          RETR    Retr    retr    ReTr    rETr
  1286.  
  1287.       This also applies to any symbols representing parameter values,
  1288.       such as A or a for ASCII TYPE.  The command codes and the argument
  1289.       fields are separated by one or more spaces.
  1290.  
  1291.       The argument field consists of a variable length character string
  1292.       ending with the character sequence <CRLF> (Carriage Return,
  1293.       Linefeed) for NVT-ASCII representation; for other negotiated
  1294.       languages a different end of line character might be used.  It
  1295.       should be noted that the server is to take NO action until the end
  1296.       of line code is received.
  1297.  
  1298.       The syntax is specified below in NVT-ASCII.  All characters in the
  1299.       argument field are ASCII characters including any ASCII
  1300.       represented decimal integers.  Square brackets denote an optional
  1301.       argument field.  If the option is not taken, the appropriate
  1302.       default is implied.
  1303.  
  1304.  
  1305.  
  1306.  
  1307.  
  1308.  
  1309.  
  1310.  
  1311.  
  1312.  
  1313.  
  1314.  
  1315.  
  1316.  
  1317.  
  1318.  
  1319.  
  1320.                                    42
  1321.  
  1322.  
  1323.                                                                         
  1324. IEN 149                                                        June 1980
  1325. RFC 765                                           File Transfer Protocol
  1326.  
  1327.  
  1328.  
  1329.       The following are the FTP commands:
  1330.  
  1331.          USER <SP> <username> <CRLF>
  1332.          PASS <SP> <password> <CRLF>
  1333.          ACCT <SP> <account information> <CRLF>
  1334.          REIN <CRLF>
  1335.          QUIT <CRLF>
  1336.          PORT <SP> <Host-port> <CRLF>
  1337.          PASV <CRLF>
  1338.          TYPE <SP> <type code> <CRLF>
  1339.          STRU <SP> <structure code> <CRLF>
  1340.          MODE <SP> <mode code> <CRLF>
  1341.          RETR <SP> <pathname> <CRLF>
  1342.          STOR <SP> <pathname> <CRLF>
  1343.          APPE <SP> <pathname> <CRLF>
  1344.          MLFL [<SP> <ident>] <CRLF>
  1345.          MAIL [<SP> <ident>] <CRLF>
  1346.          MSND [<SP> <ident>] <CRLF>
  1347.          MSOM [<SP> <ident>] <CRLF>
  1348.          MSAM [<SP> <ident>] <CRLF>
  1349.          MRSQ [<SP> <scheme>] <CRLF>
  1350.          MRCP <SP> <ident> <CRLF>
  1351.          ALLO <SP> <decimal integer>
  1352.              [<SP> R <SP> <decimal integer>] <CRLF>
  1353.          REST <SP> <marker> <CRLF>
  1354.          RNFR <SP> <pathname> <CRLF>
  1355.          RNTO <SP> <pathname> <CRLF>
  1356.          ABOR <CRLF>
  1357.          DELE <SP> <pathname> <CRLF>
  1358.          CWD <SP> <pathname> <CRLF>
  1359.          LIST [<SP> <pathname>] <CRLF>
  1360.          NLST [<SP> <pathname>] <CRLF>
  1361.          SITE <SP> <string> <CRLF>
  1362.          STAT [<SP> <pathname>] <CRLF>
  1363.          HELP [<SP> <string>] <CRLF>
  1364.          NOOP <CRLF>
  1365.  
  1366.  
  1367.  
  1368.  
  1369.  
  1370.  
  1371.  
  1372.  
  1373.  
  1374.  
  1375.  
  1376.  
  1377.  
  1378.  
  1379.                                    43
  1380.  
  1381.  
  1382.                                                                         
  1383. June 1980                                                        IEN 149
  1384. File Transfer Protocol                                           RFC 765
  1385.  
  1386.  
  1387.  
  1388.       The syntax of the above argument fields (using BNF notation where
  1389.       applicable ) is:
  1390.  
  1391.          <username> ::= <string>
  1392.          <password> ::= <string>
  1393.          <account information> ::= <string>
  1394.          <string> ::= <char> | <char><string>
  1395.          <char> ::= any of the 128 ASCII characters except <CR> and <LF>
  1396.          <marker> ::= <pr string>
  1397.          <pr string> ::= <pr char> | <pr char><pr string>
  1398.          <pr char> ::= printable characters, any
  1399.                        ASCII code 33 through 126
  1400.          <byte size> ::= any decimal integer 1 through 255
  1401.          <Host-port> ::= <Host-number>,<Port-number>
  1402.          <Host-number> ::= <number>,<number>,<number>,<number>
  1403.          <Port-number> ::= <number>,<number>
  1404.          <number> ::= any decimal integer 0 through 255
  1405.          <ident> ::= <string>
  1406.          <scheme> ::= R | T | ?
  1407.          <form code> ::= N | T | C
  1408.          <type code> ::= A [<SP> <form code>]
  1409.                        | E [<SP> <form code>]
  1410.                        | I
  1411.                        | L <SP> <byte size>
  1412.          <structure code> ::= F | R | P
  1413.          <mode code> ::= S | B | C
  1414.          <pathname> ::= <string>
  1415.  
  1416.  
  1417.  
  1418.  
  1419.  
  1420.  
  1421.  
  1422.  
  1423.  
  1424.  
  1425.  
  1426.  
  1427.  
  1428.  
  1429.  
  1430.  
  1431.  
  1432.  
  1433.  
  1434.  
  1435.  
  1436.  
  1437.  
  1438.                                    44
  1439.  
  1440.  
  1441.                                                                         
  1442. IEN 149                                                        June 1980
  1443. RFC 765                                           File Transfer Protocol
  1444.  
  1445.  
  1446.  
  1447.    SEQUENCING OF COMMANDS AND REPLIES
  1448.  
  1449.       The communication between the user and server is intended to be an
  1450.       alternating dialogue.  As such, the user issues an FTP command and
  1451.       the server responds with a prompt primary reply.  The user should
  1452.       wait for this initial primary success or failure response before
  1453.       sending further commands.
  1454.  
  1455.       Certain commands require a second reply for which the user should
  1456.       also wait.  These replies may, for example, report on the progress
  1457.       or completion of file transfer or the closing of the data
  1458.       connection.  They are secondary replies to file transfer commands.
  1459.  
  1460.       One important group of informational replies is the connection
  1461.       greetings.  Under normal circumstances, a server will send a 220
  1462.       reply, "awaiting input", when the connection is completed.  The
  1463.       user should wait for this greeting message before sending any
  1464.       commands.  If the server is unable to accept input right away, he
  1465.       should send a 120 "expected delay" reply immediately and a 220
  1466.       reply when ready.  The user will then know not to hang up if there
  1467.       is a delay.
  1468.  
  1469.       The table below lists alternative success and failure replies for
  1470.       each command.  These must be strictly adhered to; a server may
  1471.       substitute text in the replies, but the meaning and action implied
  1472.       by the code numbers and by the specific command reply sequence
  1473.       cannot be altered.
  1474.  
  1475.       Command-Reply Sequences
  1476.  
  1477.          In this section, the command-reply sequence is presented.  Each
  1478.          command is listed with its possible replies; command groups are
  1479.          listed together.  Preliminary replies are listed first (with
  1480.          their succeeding replies indented and under them), then
  1481.          positive and negative completion, and finally intermediary
  1482.          replies with the remaining commands from the sequence
  1483.          following.  This listing forms the basis for the state
  1484.          diagrams, which will be presented separately.
  1485.  
  1486.             Connection Establishment
  1487.                120
  1488.                   220
  1489.                220
  1490.                421
  1491.  
  1492.  
  1493.  
  1494.  
  1495.  
  1496.  
  1497.                                    45
  1498.  
  1499.  
  1500.                                                                         
  1501. June 1980                                                        IEN 149
  1502. File Transfer Protocol                                           RFC 765
  1503.  
  1504.  
  1505.  
  1506.             Login
  1507.                USER
  1508.                   230
  1509.                   530
  1510.                   500, 501, 421
  1511.                   331, 332
  1512.                PASS
  1513.                   230
  1514.                   202
  1515.                   530
  1516.                   500, 501, 503, 421
  1517.                   332
  1518.                ACCT
  1519.                   230
  1520.                   202
  1521.                   530
  1522.                   500, 501, 503, 421
  1523.             Logout
  1524.                QUIT
  1525.                   221
  1526.                   500
  1527.                REIN
  1528.                   120
  1529.                      220
  1530.                   220
  1531.                   421
  1532.                   500, 502
  1533.             Transfer parameters
  1534.                PORT
  1535.                   200
  1536.                   500, 501, 421, 530
  1537.                PASV
  1538.                   227
  1539.                   500, 501, 502, 421, 530
  1540.                MODE, TYPE, STRU
  1541.                   200
  1542.                   500, 501, 504, 421, 530
  1543.             File action commands
  1544.                ALLO
  1545.                   200
  1546.                   202
  1547.                   500, 501, 504, 421, 530
  1548.                REST
  1549.                   500, 501, 502, 421, 530
  1550.                   350
  1551.  
  1552.  
  1553.  
  1554.  
  1555.  
  1556.                                    46
  1557.  
  1558.  
  1559.                                                                         
  1560. IEN 149                                                        June 1980
  1561. RFC 765                                           File Transfer Protocol
  1562.  
  1563.  
  1564.  
  1565.                STOR
  1566.                   125, 150
  1567.                      (110)
  1568.                      226, 250
  1569.                      425, 426, 451, 551, 552
  1570.                   532, 450, 452, 553
  1571.                   500, 501, 421, 530
  1572.                RETR
  1573.                   125, 150
  1574.                      (110)
  1575.                      226, 250
  1576.                      425, 426, 451
  1577.                   450, 550
  1578.                   500, 501, 421, 530
  1579.                LIST, NLST
  1580.                   125, 150
  1581.                      226, 250
  1582.                      425, 426, 451
  1583.                   450
  1584.                   500, 501, 502, 421, 530
  1585.                APPE
  1586.                   125, 150
  1587.                      (110)
  1588.                      226, 250
  1589.                      425, 426, 451, 551, 552
  1590.                   532, 450, 550, 452, 553
  1591.                   500, 501, 502, 421, 530
  1592.                MLFL
  1593.                   125, 150, 151, 152
  1594.                      226, 250
  1595.                      425, 426, 451, 552
  1596.                   532, 450, 550, 452, 553
  1597.                   500, 501, 502, 421, 530
  1598.                RNFR
  1599.                   450, 550
  1600.                   500, 501, 502, 421, 530
  1601.                   350
  1602.                RNTO
  1603.                   250
  1604.                   532, 553
  1605.                   500, 501, 502, 503, 421, 530
  1606.                DELE, CWD
  1607.                   250
  1608.                   450, 550
  1609.                   500, 501, 502, 421, 530
  1610.  
  1611.  
  1612.  
  1613.  
  1614.  
  1615.                                    47
  1616.  
  1617.  
  1618.                                                                         
  1619. June 1980                                                        IEN 149
  1620. File Transfer Protocol                                           RFC 765
  1621.  
  1622.  
  1623.  
  1624.                ABOR
  1625.                   225, 226
  1626.                   500, 501, 502, 421
  1627.                MAIL, MSND
  1628.                   151, 152
  1629.                      354
  1630.                         250
  1631.                         451, 552
  1632.                   354
  1633.                      250
  1634.                      451, 552
  1635.                   450, 550, 452, 553
  1636.                   500, 501, 502, 421, 530
  1637.                MSOM, MSAM
  1638.                   119, 151, 152
  1639.                      354
  1640.                         250
  1641.                         451, 552
  1642.                   354
  1643.                      250
  1644.                      451, 552
  1645.                   450, 550, 452, 553
  1646.                   500, 501, 502, 421, 530
  1647.                MRSQ
  1648.                   200, 215
  1649.                   500, 501, 502, 421, 530
  1650.                MRCP
  1651.                   151, 152
  1652.                      200
  1653.                   200
  1654.                   450, 550, 452, 553
  1655.                   500, 501, 502, 503, 421
  1656.             Informational commands
  1657.                STAT
  1658.                   211, 212, 213
  1659.                   450
  1660.                   500, 501, 502, 421, 530
  1661.                HELP
  1662.                   211, 214
  1663.                   500, 501, 502, 421
  1664.             Miscellaneous commands
  1665.                SITE
  1666.                   200
  1667.                   202
  1668.                   500, 501, 530
  1669.  
  1670.  
  1671.  
  1672.  
  1673.  
  1674.                                    48
  1675.  
  1676.  
  1677.                                                                         
  1678. IEN 149                                                        June 1980
  1679. RFC 765                                           File Transfer Protocol
  1680.  
  1681.  
  1682.  
  1683.                NOOP
  1684.                   200
  1685.                   500 421
  1686.  
  1687.  
  1688.  
  1689.  
  1690.  
  1691.  
  1692.  
  1693.  
  1694.  
  1695.  
  1696.  
  1697.  
  1698.  
  1699.  
  1700.  
  1701.  
  1702.  
  1703.  
  1704.  
  1705.  
  1706.  
  1707.  
  1708.  
  1709.  
  1710.  
  1711.  
  1712.  
  1713.  
  1714.  
  1715.  
  1716.  
  1717.  
  1718.  
  1719.  
  1720.  
  1721.  
  1722.  
  1723.  
  1724.  
  1725.  
  1726.  
  1727.  
  1728.  
  1729.  
  1730.  
  1731.  
  1732.  
  1733.                                    49
  1734.  
  1735.  
  1736.                                                                         
  1737. June 1980                                                        IEN 149
  1738. File Transfer Protocol                                           RFC 765
  1739.  
  1740.  
  1741.  
  1742. STATE DIAGRAMS
  1743.  
  1744.    Here we present state diagrams for a very simple minded FTP
  1745.    implementation. Only the first digit of the reply codes is used.
  1746.    There is one state diagram for each group of FTP commands or command
  1747.    sequences.
  1748.  
  1749.    The command groupings were determined by constructing a model for
  1750.    each command then collecting together the commands with structurally
  1751.    identical models.
  1752.  
  1753.    For each command or command sequence there are three possible
  1754.    outcomes: success (S), failure (F), and error (E). In the state
  1755.    diagrams below we use the symbol B for "begin", and the symbol W for
  1756.    "wait for reply".
  1757.  
  1758.    We first present the diagram that represents the largest group of FTP
  1759.    commands:
  1760.  
  1761.       
  1762.                                1,3    +---+
  1763.                           ----------->| E |
  1764.                          |            +---+
  1765.                          |
  1766.       +---+    cmd    +---+    2      +---+
  1767.       | B |---------->| W |---------->| S |
  1768.       +---+           +---+           +---+
  1769.                          |
  1770.                          |     4,5    +---+
  1771.                           ----------->| F |
  1772.                                       +---+
  1773.       
  1774.  
  1775.       This diagram models the commands:
  1776.  
  1777.          ABOR, ALLO, DELE, CWD, HELP, MODE, MRCP, MRSQ, NOOP, PASV,
  1778.          QUIT, SITE, PORT, STAT, STRU, TYPE.
  1779.  
  1780.  
  1781.  
  1782.  
  1783.  
  1784.  
  1785.  
  1786.  
  1787.  
  1788.  
  1789.  
  1790.  
  1791.  
  1792.                                    50
  1793.  
  1794.  
  1795.                                                                         
  1796. IEN 149                                                        June 1980
  1797. RFC 765                                           File Transfer Protocol
  1798.  
  1799.  
  1800.  
  1801.    The other large group of commands is represented by a very similar
  1802.    diagram:
  1803.  
  1804.       
  1805.                                3      +---+
  1806.                           ----------->| E |
  1807.                          |            +---+
  1808.                          |
  1809.       +---+    cmd    +---+    2      +---+
  1810.       | B |---------->| W |---------->| S |
  1811.       +---+       --->+---+           +---+
  1812.                  |     | |
  1813.                  |     | |     4,5    +---+
  1814.                  |  1  |  ----------->| F |
  1815.                   -----               +---+
  1816.       
  1817.  
  1818.       This diagram models the commands:
  1819.  
  1820.          APPE, LIST, MLFL, NLST, REIN, RETR, STOR.
  1821.  
  1822.    Note that this second model could also be used to represent the first
  1823.    group of commands, the only difference being that in the first group
  1824.    the 100 series replies are unexpected and therefore treated as error,
  1825.    while the second group expects (some may require) 100 series replies.
  1826.  
  1827.    The remaining diagrams model command sequences, perhaps the simplest
  1828.    of these is the rename sequence:
  1829.  
  1830.       
  1831.       +---+   RNFR    +---+    1,2    +---+
  1832.       | B |---------->| W |---------->| E |
  1833.       +---+           +---+        -->+---+
  1834.                        | |        |
  1835.                 3      | | 4,5    |
  1836.          --------------  ------   |
  1837.         |                      |  |   +---+
  1838.         |               ------------->| S |
  1839.         |              |   1,3 |  |   +---+
  1840.         |             2|  --------
  1841.         |              | |     |
  1842.         V              | |     |
  1843.       +---+   RNTO    +---+ 4,5 ----->+---+
  1844.       |   |---------->| W |---------->| F |
  1845.       +---+           +---+           +---+
  1846.       
  1847.  
  1848.  
  1849.  
  1850.  
  1851.                                    51
  1852.  
  1853.  
  1854.                                                                         
  1855. June 1980                                                        IEN 149
  1856. File Transfer Protocol                                           RFC 765
  1857.  
  1858.  
  1859.  
  1860.    A very similar diagram models the Mail and Send commands:
  1861.  
  1862.       
  1863.                    ----  1
  1864.                   |    |
  1865.       +---+  cmd   -->+---+     2     +---+
  1866.       | B |---------->| W |---------->| E |
  1867.       +---+           +---+        -->+---+
  1868.                        | |        |
  1869.                 3      | | 4,5    |
  1870.          --------------  ------   |
  1871.         |                      |  |   +---+
  1872.         |               ------------->| S |
  1873.         |              |   1,3 |  |   +---+
  1874.         |             2|  --------
  1875.         |              | |     |
  1876.         V              | |     |
  1877.       +---+   text    +---+ 4,5 ----->+---+
  1878.       |   |---------->| W |---------->| F |
  1879.       +---+           +---+           +---+
  1880.       
  1881.  
  1882.          This diagram models the commands:
  1883.  
  1884.             MAIL, MSND, MSOM, MSAM.
  1885.  
  1886.       Note that the "text" here is a series of lines sent from the user
  1887.       to the server with no response expected until the last line is
  1888.       sent, recall that the last line must consist only of a single
  1889.       period.
  1890.  
  1891.  
  1892.  
  1893.  
  1894.  
  1895.  
  1896.  
  1897.  
  1898.  
  1899.  
  1900.  
  1901.  
  1902.  
  1903.  
  1904.  
  1905.  
  1906.  
  1907.  
  1908.  
  1909.  
  1910.                                    52
  1911.  
  1912.  
  1913.                                                                         
  1914. IEN 149                                                        June 1980
  1915. RFC 765                                           File Transfer Protocol
  1916.  
  1917.  
  1918.  
  1919.    The next diagram is a simple model of the Restart command:
  1920.  
  1921.       
  1922.       +---+   REST    +---+    1,2    +---+
  1923.       | B |---------->| W |---------->| E |
  1924.       +---+           +---+        -->+---+
  1925.                        | |        |
  1926.                 3      | | 4,5    |
  1927.          --------------  ------   |
  1928.         |                      |  |   +---+
  1929.         |               ------------->| S |
  1930.         |              |   3   |  |   +---+
  1931.         |             2|  --------
  1932.         |              | |     |
  1933.         V              | |     |
  1934.       +---+   cmd     +---+ 4,5 ----->+---+
  1935.       |   |---------->| W |---------->| F |
  1936.       +---+        -->+---+           +---+
  1937.                   |      |
  1938.                   |  1   |
  1939.                    ------
  1940.  
  1941.  
  1942.          Where "cmd" is APPE, STOR, RETR, or MLFL.
  1943.  
  1944.    We note that the above three models are similar, in fact the Mail
  1945.    diagram and the Rename diagram are structurally identical. The
  1946.    Restart differs from the other two only in the treatment of 100
  1947.    series replies at the second stage.
  1948.  
  1949.  
  1950.  
  1951.  
  1952.  
  1953.  
  1954.  
  1955.  
  1956.  
  1957.  
  1958.  
  1959.  
  1960.  
  1961.  
  1962.  
  1963.  
  1964.  
  1965.  
  1966.  
  1967.  
  1968.  
  1969.                                    53
  1970.  
  1971.  
  1972.                                                                         
  1973. June 1980                                                        IEN 149
  1974. File Transfer Protocol                                           RFC 765
  1975.  
  1976.  
  1977.  
  1978.    The most complicated diagram is for the Login sequence:
  1979.  
  1980.       
  1981.                             1
  1982.       +---+   USER    +---+------------->+---+
  1983.       | B |---------->| W | 2       ---->| E |
  1984.       +---+           +---+------  |  -->+---+
  1985.                        | |       | | |
  1986.                      3 | | 4,5   | | |
  1987.          --------------   -----  | | |
  1988.         |                      | | | |
  1989.         |                      | | | |
  1990.         |                 ---------  |
  1991.         |               1|     | |   |
  1992.         V                |     | |   |
  1993.       +---+   PASS    +---+ 2  |  ------>+---+
  1994.       |   |---------->| W |------------->| S |
  1995.       +---+           +---+   ---------->+---+
  1996.                        | |   | |     |
  1997.                      3 | |4,5| |     |
  1998.          --------------   --------   |
  1999.         |                    | |  |  |
  2000.         |                    | |  |  |
  2001.         |                 -----------
  2002.         |             1,3|   | |  |
  2003.         V                |  2| |  |
  2004.       +---+   ACCT    +---+--  |   ----->+---+
  2005.       |   |---------->| W | 4,5 -------->| F |
  2006.       +---+           +---+------------->+---+
  2007.  
  2008.  
  2009.  
  2010.  
  2011.  
  2012.  
  2013.  
  2014.  
  2015.  
  2016.  
  2017.  
  2018.  
  2019.  
  2020.  
  2021.  
  2022.  
  2023.  
  2024.  
  2025.  
  2026.  
  2027.  
  2028.                                    54
  2029.  
  2030.  
  2031.                                                                         
  2032. IEN 149                                                        June 1980
  2033. RFC 765                                           File Transfer Protocol
  2034.  
  2035.  
  2036.  
  2037.    Finally we present a generalized diagram that could be used to model
  2038.    the command and reply interchange:
  2039.  
  2040.       
  2041.                ------------------------------------
  2042.               |                                    |
  2043.       Begin   |                                    |
  2044.         |     V                                    |
  2045.         |   +---+  cmd   +---+ 2         +---+     |
  2046.          -->|   |------->|   |---------->|   |     |
  2047.             |   |        | W |           | S |-----|
  2048.          -->|   |     -->|   |-----      |   |     |
  2049.         |   +---+    |   +---+ 4,5 |     +---+     |
  2050.         |     |      |    | |      |               |
  2051.         |     |      |   1| |3     |     +---+     |
  2052.         |     |      |    | |      |     |   |     |
  2053.         |     |       ----  |       ---->| F |-----
  2054.         |     |             |            |   |
  2055.         |     |             |            +---+
  2056.          -------------------
  2057.               |
  2058.               |
  2059.               V
  2060.              End
  2061.       
  2062.  
  2063.  
  2064.  
  2065.  
  2066.  
  2067.  
  2068.  
  2069.  
  2070.  
  2071.  
  2072.  
  2073.  
  2074.  
  2075.  
  2076.  
  2077.  
  2078.  
  2079.  
  2080.  
  2081.  
  2082.  
  2083.  
  2084.  
  2085.  
  2086.  
  2087.                                    55
  2088.  
  2089.  
  2090.                                                                         
  2091. June 1980                                                        IEN 149
  2092. File Transfer Protocol                                           RFC 765
  2093.  
  2094.  
  2095.  
  2096. TYPICAL FTP SCENARIO
  2097.  
  2098.    User at Host U wanting to transfer files to/from Host S:
  2099.  
  2100.    In general the user will communicate to the server via a mediating
  2101.    user-FTP process.  The following may be a typical scenario.  The
  2102.    user-FTP prompts are shown in parentheses, '---->' represents
  2103.    commands from Host U to Host S, and '<----' represents replies from
  2104.    Host S to Host U.
  2105.  
  2106.       LOCAL COMMANDS BY USER              ACTION INVOLVED
  2107.  
  2108.       ftp (host) multics<CR>         Connect to Host S, port L,
  2109.                                      establishing TELNET connections
  2110.                                      <---- 220 Service ready <CRLF>
  2111.       username Doe <CR>              USER Doe<CRLF>---->
  2112.                                      <---- 331 User name ok,
  2113.                                                need password<CRLF>
  2114.       password mumble <CR>           PASS mumble<CRLF>---->
  2115.                                      <---- 230 User logged in.<CRLF>
  2116.       retrieve (local type) ASCII<CR>
  2117.       (local pathname) test 1 <CR>   User-FTP opens local file in ASCII.
  2118.       (for.pathname) test.pl1<CR>    RETR test.pl1<CRLF> ---->
  2119.                                      <---- 150 File status okay;
  2120.                                            about to open data connection
  2121.                                      Server makes data connection
  2122.                                      to port U
  2123.       <CRLF>
  2124.                                      <---- 226 Closing data connection,
  2125.                                          file transfer successful<CRLF>
  2126.       type Image<CR>                 TYPE I<CRLF> ---->
  2127.                                      <---- 200 Command OK<CRLF>
  2128.       store (local type) image<CR>
  2129.       (local pathname) file dump<CR> User-FTP opens local file in Image.
  2130.       (for.pathname) >udd>cn>fd<CR>  STOR >udd>cn>fd<CRLF> ---->
  2131.                                      <---- 450 Access denied<CRLF>
  2132.       terminate                      QUIT <CRLF> ---->
  2133.                                      Server closes all
  2134.                                      connections.
  2135.  
  2136.  
  2137.  
  2138.  
  2139.  
  2140.  
  2141.  
  2142.  
  2143.  
  2144.  
  2145.  
  2146.                                    56
  2147.  
  2148.  
  2149.                                                                         
  2150. IEN 149                                                        June 1980
  2151. RFC 765                                           File Transfer Protocol
  2152.  
  2153.  
  2154.  
  2155. CONNECTION ESTABLISHMENT
  2156.  
  2157.    The FTP control connection is established via TCP between the user
  2158.    process port U and the server process port L.  This protocol is
  2159.    assigned the service port 21 (25 octal), that is L=21.
  2160.  
  2161.  
  2162.  
  2163.  
  2164.  
  2165.  
  2166.  
  2167.  
  2168.  
  2169.  
  2170.  
  2171.  
  2172.  
  2173.  
  2174.  
  2175.  
  2176.  
  2177.  
  2178.  
  2179.  
  2180.  
  2181.  
  2182.  
  2183.  
  2184.  
  2185.  
  2186.  
  2187.  
  2188.  
  2189.  
  2190.  
  2191.  
  2192.  
  2193.  
  2194.  
  2195.  
  2196.  
  2197.  
  2198.  
  2199.  
  2200.  
  2201.  
  2202.  
  2203.  
  2204.  
  2205.                                    57
  2206.  
  2207.  
  2208.                                                                         
  2209. June 1980                                                        IEN 149
  2210. File Transfer Protocol                                           RFC 765
  2211.  
  2212.  
  2213.  
  2214. APPENDIX ON MAIL
  2215.  
  2216.    The basic commands transmitting mail are the MAIL and the MLFL
  2217.    commands.  These commands cause the transmitted data to be entered
  2218.    into the recipients mailbox.
  2219.  
  2220.       MAIL <SP> <recipient name> <CRLF>
  2221.  
  2222.          If accepted, returns 354 reply and considers all succeeding
  2223.          lines to be the message text, terminated by a line containing
  2224.          only a period, upon which a 250 completion reply is returned.
  2225.          Various errors are possible.
  2226.  
  2227.       MLFL <SP> <recipient name> <CRLF>
  2228.  
  2229.          If accepted, acts like a STOR command, except that the data is
  2230.          considered to be the message text.  Various errors are
  2231.          possible.
  2232.  
  2233.    There are two possible preliminary replies that a server may use to
  2234.    indicate that it is accepting mail for a user whose mailbox is not at
  2235.    that server.
  2236.  
  2237.       151 User not local; Will forward to <user>@<host>.
  2238.  
  2239.          This reply indicates that the server knows the user's mailbox
  2240.          is on another host and will take responsibility for forwarding
  2241.          the mail to that host.  For example, at BBN (or ISI) there are
  2242.          several host which each have a list of many of the users on
  2243.          several of the host.  These hosts then can accept mail for any
  2244.          user on their list and forward it to the correct host.
  2245.  
  2246.       152 User Unknown; Mail will be forwarded by the operator.
  2247.  
  2248.          This reply indicates that the host does not recognize the user
  2249.          name, but that it will accept the mail and have the operator
  2250.          attempt to deliver it.  This is useful if the user name is
  2251.          misspelled, but may be a disservice if the mail is really
  2252.          undeliverable.
  2253.  
  2254.    Three FTP commands provide for "sending" a message to a logged-in
  2255.    user's terminal, as well as variants for mailing it normally whether
  2256.    the user is logged in or not.
  2257.  
  2258.  
  2259.  
  2260.  
  2261.  
  2262.  
  2263.  
  2264.                                    58
  2265.  
  2266.  
  2267.                                                                         
  2268. IEN 149                                                        June 1980
  2269. RFC 765                                           File Transfer Protocol
  2270.  
  2271.  
  2272.  
  2273.       MSND -- SeND to tnguage,"
  2274.       TM-80-18, USC/Information Sciences Institute, July 1980.
  2275.  
  2276. [30]  Graphics Standard Planning Committee, "Core System," Computer
  2277.       Graphics, V. 13, N. 3, SIGGRAPH, ACM, August 1979.
  2278.  
  2279.  
  2280.  
  2281.  
  2282.  
  2283.  
  2284.  
  2285.  
  2286.  
  2287.  
  2288.  
  2289.  
  2290.  
  2291.  
  2292.  
  2293.  
  2294.  
  2295.  
  2296.  
  2297.  
  2298.  
  2299.  
  2300.  
  2301.  
  2302.  
  2303.  
  2304.  
  2305.  
  2306.  
  2307.  
  2308.  
  2309.  
  2310.  
  2311.  
  2312.  
  2313.  
  2314.  
  2315.  
  2316.  
  2317.  
  2318.  
  2319. Postel                                                         [Page 33]
  2320.  
  2321.  
  2322.                                                              August 1980
  2323. A Structured Format for Transmission of Multi-Media Documents
  2324.  
  2325.  
  2326.  
  2327.  
  2328.  
  2329.  
  2330.  
  2331.  
  2332.  
  2333.  
  2334.  
  2335.  
  2336.  
  2337.  
  2338.  
  2339.  
  2340.  
  2341.  
  2342.  
  2343.  
  2344.  
  2345.  
  2346.  
  2347.  
  2348.  
  2349.  
  2350.  
  2351.  
  2352.  
  2353.  
  2354.  
  2355.  
  2356.  
  2357.  
  2358.  
  2359.  
  2360.  
  2361.  
  2362.  
  2363.  
  2364.  
  2365.  
  2366.  
  2367.  
  2368.  
  2369.  
  2370.  
  2371.  
  2372.  
  2373.  
  2374.  
  2375.  
  2376.  
  2377.  
  2378. [Page 34]                                                         Postel
  2379.  
  2380.